function maxIncreasingSubarrays(nums) {
  const n = nums.length;
  if (n < 2) return 0;

  // 计算inc数组，inc[i]表示从i开始的最长严格递增子数组的长度
  const inc = new Array(n).fill(1);
  for (let i = n - 2; i >= 0; i--) {
    if (nums[i] < nums[i + 1]) {
      inc[i] = inc[i + 1] + 1;
    }
  }

  let maxK = 0;
  // 遍历每个可能的起始位置a
  for (let a = 0; a < n; a++) {
    // 对于每个a，尝试所有可能的k值
    // k的最大值受限于从a开始的递增子数组长度和剩余数组长度
    const maxPossibleK = Math.min(inc[a], Math.floor((n - a) / 2));
    for (let k = maxPossibleK; k > maxK; k--) {
      // 从大到小尝试，找到即退出
      const b = a + k;
      if (b + k - 1 >= n) continue; // 确保第二个子数组不越界
      if (inc[b] >= k) {
        // 检查第二个子数组是否至少有k长度的递增
        maxK = k;
        break; // 找到当前a下的最大k，无需再试更小的
      }
    }
  }

  return maxK;
}
